package clients;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import Windows.FenetreSimu;
import barsbieres.Bar;
import barsbieres.Biere;
import barsbieres.Main;

/**
 * N'aime qu'une seule bi�re et ne retourne pas dans un bar qui ne l'a pas servi
 * 
 */
public class ClientDifficile extends Client {

	private List<Bar> blackList;

	/**
	 * Initialise le Client avec la seule bi�re qu'il aime et la liste des bars
	 * qui ne l'ont pas servi.
	 * 
	 */
	public ClientDifficile(Biere biere) {
		super();
		bieresPreferees.add(biere);
		this.blackList = new ArrayList<Bar>();
		this.nomC = "Client difficile";
	}

	@Override
	public void choisitBar(ArrayList<Bar> listeBars) {
		if(blackList.size() == FenetreSimu.bars.size()){
			blackList.clear();
		}
		boolean trouver = false;
		while(!trouver){
			int r = new Random().nextInt(listeBars.size());
			if(!blackList.contains(listeBars.get(r))){
				listeBars.get(r).incNbrCDifficile();
				setBar(listeBars.get(r));
				trouver = true;
				//System.out.println("Nouveau bar : " + getBar().getGerant().getNom());
			}
		}
	}

	@Override
	public void satisfaction(Bar b, boolean satisfait) {
		if(!satisfait){
			blackList.add(b);
			b.decNbrCDifficile();
			//System.out.println("Changement de bar : " + b.getGerant().getNom());
			choisitBar(FenetreSimu.bars);
		}
	}

}
